package com.pangolin.pangolinim.service.list;

import com.orhanobut.logger.Logger;
import com.pangolin.pangolinim.sqlite.DBContact;
import com.pangolin.pangolinim.sqlite.DBSession;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class SessionList {
    private boolean mIsInit = false; //初始化标识位
    private List<DBSession> sessions = new ArrayList<DBSession>();

    /**
     * TODO:返回是否初始化过数据
     * @return true为初始化过，反之
     */
    public boolean isInit(){ return mIsInit;}

    /**
     * TODO:一次性设置最近会话列表
     * @param sessions
     */
    public void set_sessions(List<DBSession> sessions){
        this.sessions = sessions;
        this.mIsInit = true;
    }

    /**
     * TODO:获取该用户的最近会话列表
     * @return 最近会话列表
     */
    public List<DBSession> get_sessions(){
        return sessions;
    }

    /**
     * @TODO:删除对应的会话session
     * @param uid 会话的用户uid
     */
    public void delete_session(int uid){
        Iterator<DBSession> item = sessions.iterator();
        while (item.hasNext())
        {
            DBSession dbSession = item.next();
            if (dbSession.getUid() == uid)
            {
                item.remove();
            }
        }
    }

    /**
     * @TODO:新建会话（如果已经存在会修改会话）
     */
    public void insert_session(DBSession session){
        if(session.getUid() <= 0){ return; }
        //新建或修改列表数据
        int i;
        for (i = 0; i < sessions.size() ; i ++){
            if(sessions.get(i).getUid() == session.getUid()){
                sessions.get(i).setName(session.getName());
                sessions.get(i).setHeadimg(session.getHeadimg());
                sessions.get(i).setMsgtype(session.getMsgtype());
                sessions.get(i).setLastmsg(session.getLastmsg());
                sessions.get(i).setLasttime(session.getLasttime());
                sessions.get(i).setUnread(session.getUnread());
            }
        }
        if(i == sessions.size()){
            sessions.add(session);
        }

    }

    /**
     * TODO:根据用户uid查找会话
     * @param uid 用户uid
     * @return 会话信息，没有则返回null
     */
    public DBSession get_session(int uid){
        for(DBSession session : sessions){
            if (session.getUid() == uid){
                return  session;
            }
        }
        return null;
    }

    /**
     * TODO:修改会话信息
     * @param session 新的会话信息
     */
    public void update_session(DBSession session){
        for (int i = 0; i < sessions.size() ; i ++){

            if(sessions.get(i).getUid() == session.getUid()){
                if(session.getName() != null)
                    sessions.get(i).setName(session.getName());
                if(session.getHeadimg() != null)
                    sessions.get(i).setHeadimg(session.getHeadimg());
                if(session.getMsgtype() > 0)
                    sessions.get(i).setMsgtype(session.getMsgtype());
                if(session.getLastmsg() != null)
                    sessions.get(i).setLastmsg(session.getLastmsg());
                if(session.getLasttime() != null)
                    sessions.get(i).setLasttime(session.getLasttime());
                if(session.getUnread() >= 0)
                    sessions.get(i).setUnread(session.getUnread());
            }
        }
    }
}
